package threshold;

/**
 * @Author wujiaming
 * @Description TODO
 * @Date 2023-02-24 22:00·
 * @Version 1.0
 * 给你一个整数 x ，如果 x 是一个回文整数，返回 true ；否则，返回 false 。

回文数是指正序（从左向右）和倒序（从右向左）读都是一样的整数。

例如，121 是回文，而 123 不是。
 */
public class IsPalindrome {


    /**
     * 判断一个数字是否为回文数字
     * ①如果他是复试则不是会问数字，如果末尾是0则不是会问数字回文数字
     * ②例如1221，当最后两位末尾的数字等于前两位时，是回文数字
     * 12321
     * @param x
     * @return
     */
    public boolean isPalindrome(int x) {

        if( x<0 || (x%10 == 0 &&x!=0)){
            return false;
        }
        int revNUm = 0;
        while(x>revNUm){
            revNUm = revNUm*10 + x%10;
            x /=10;
        }

        return (x==revNUm) || (x==revNUm/10);
    }

    /**
     * 法二使用数字转化为字符串，使用额外的辅助空间比较
     * @param x
     * @return
     */
    public boolean isPalindrome1(int x) {

        if( x<0 || (x%10 == 0 &&x!=0)){
            return false;
        }
        String str = "";
        int x1 =x;
        while(x>0){
            str += x%10;
            x /=10;
        }
        int revNUm = Integer.parseInt(str);
        System.out.println(revNUm);
        System.out.println(x);
        return x1==revNUm;
    }

    public static void main(String[] args) {


        IsPalindrome isPalindrome = new IsPalindrome();
        System.out.println(isPalindrome.isPalindrome1(12321));
    }
}
